package com.home_school_platform.dao;

import com.home_school_platform.entity.pojo.Pay;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 支付Dao接口
 * @author Lin
 */
@Mapper
@Repository
public interface PayDao {

    /**
     * 插入支付信息
     * @param pay Pay实体
     * @return 影响行数
     */
    Integer insertPay(Pay pay);

    /**
     * 根据家长id删除支付信息
     * @param parentId 家长id
     * @return 影响行数
     */
    Integer deletePay(Integer parentId);

    /**
     * 修改支付信息
     * @param pay 支付实体
     * @return 影响行数
     */
    Integer updatePay(Pay pay);

    /**
     * 查询所有支付消息
     * @param currentPage 当前页
     * @param pageSize 每页显示多少条数据
     * @return 支付列表
     */
    List<Pay> listPay(@Param("currentPage") Integer currentPage,
                      @Param("pageSize") Integer pageSize);

    /**
     * 根据 支付类型消息 查找 支付消息
     * @param messageId 支付消息id
     * @param currentPage 当前页
     * @param pageSize 每页显示多少条记录
     * @return 支付列表
     */
    List<Pay> listPayByMessage(@Param("messageId") Integer messageId,
                               @Param("currentPage") Integer currentPage,
                               @Param("pageSize") Integer pageSize);

    /**
     * 根据 家长 查找 支付消息
     * @param parentId 家长id
     * @param currentPage 当前页
     * @param pageSize 每页显示多少条记录
     * @return 支付列表
     */
    List<Pay> listPayByParent(@Param("parentId") Integer parentId,
                              @Param("currentPage") Integer currentPage,
                              @Param("pageSize") Integer pageSize);

    /**
     * 模糊查询支付消息
     * @param keyWord 关键字
     * @param currentPage 当前页
     * @param pageSize 每页显示多少条记录
     * @return 支付列表
     */
    List<Pay> listPayLike(@Param("keyWord") String keyWord,
                          @Param("currentPage") Integer currentPage,
                          @Param("pageSize") Integer pageSize);

    /**
     * 统计支付消息数量
     * @return 支付数量
     */
    Integer countPay();

    /**
     * 根据 支付类型消息 统计 支付数量
     * @param messageId 支付消息的id
     * @return 支付数量
     */
    Integer countPayByMessage(Integer messageId);

    /**
     * 根据 家长 统计 支付数量
     * @param parentId 家长id
     * @return 支付数量
     */
    Integer countPayByParent(Integer parentId);
}
